package homework.day04;

import java.sql.SQLOutput;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Random;

/**
 * 在一个List集合中生成20个随机整数(100以内)
 * 然后按照从小到大的顺序排列，排好后再将第6个-第15个元素
 * 按照从大到小顺序排列，并最终输出集合
 * 例如:
 * 1,2,3,4,5,15,14,13,12,11,10,9,8,7,6,16,17,18,19,20
 * @author Jobs
 *
 */
public class Test01 {
    public static void main(String[] args) {
        Random ran = new Random();
        List<Integer> list = new ArrayList<>();
        for(int i = 0; i < 20; i++){
            list.add(ran.nextInt(100));
        }
        // 打印
        System.out.println(list);
        // 排序，由于是Integer类型，就不考虑创建比较器了
        Collections.sort(list);
        System.out.println("使用collections.sort()排序的结果为：" + list);

        // 将第6个元素-第15个元素从大到小输出
        // 由于前面已经排好了，方法1，使用get/set方法去实现交换即可
        int start = 5,end = 15;
        // sortOne(list,start,end);
        // 方法2，创建新的集合去存6-15个元素，
        sortTwo(list,start,end);


    }
    // 方法1 使用get/set方法
    public static void sortOne(List<Integer> list,int start,int end){
        for(int i = start;i<(start+ end)/2;i++){
            int temp = list.get(i);
            // System.out.print(temp + " ");
            list.set(i,list.get(end + start - i -1));
            list.set(end + start - i -1,temp);
        }
        System.out.println("使用set/get方法排序  的结果      为：" + list);
    }
    // 使用集合
    public static void sortTwo(List<Integer> list,int start,int end){
        // 使用集合反转
        List<Integer> list2 = new ArrayList<>();
        list2.addAll(list.subList(start,end));
        Collections.reverse(list2);
        // System.out.println(list2);

        // 移除第6-15的元素
        list.removeAll(list.subList(start,end));
        // System.out.println(list);
        // 将反转的集合插入到集合中指定位置
        list.addAll(start,list2);
        System.out.println("使用Collections.reverse()排序的结果为：" + list);
    }
}
